{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import svm\n",
    "from sklearn.datasets import make_blobs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 随机生成两个数据集，可以保证线性可分\n",
    "X, y = make_blobs(n_samples=100, centers=2, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=1000.0, cache_size=200, class_weight=None, coef0=0.0,\n",
       "  decision_function_shape='ovr', degree=3, gamma='auto', kernel='linear',\n",
       "  max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
       "  tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 简单线性核\n",
    "clf = svm.SVC(kernel='linear', C=1000.0) # C是SVM中J(theta)的参数\n",
    "clf.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.meshgrid?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda\\lib\\site-packages\\matplotlib\\contour.py:967: UserWarning: The following kwargs were not used by contour: 'color', 'linestyle'\n",
      "  s)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1fc0d190550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:,0], X[:,1], c=y, s=30, cmap=plt.cm.Paired)\n",
    "ax = plt.gca()\n",
    "xlim = ax.get_xlim()\n",
    "ylim = ax.get_ylim()\n",
    "\n",
    "# 计算决策边界\n",
    "xx = np.linspace(xlim[0], xlim[1], 30)\n",
    "yy = np.linspace(ylim[0], ylim[1], 30)\n",
    "YY, XX = np.meshgrid(yy, xx)\n",
    "xy = np.vstack([XX.ravel(), YY.ravel()]).T\n",
    "Z = clf.decision_function(xy).reshape(XX.shape)\n",
    "\n",
    "# 绘制决策边界以及间隔\n",
    "ax.contour(XX, YY, Z, color='k', levels=[-1,0,1], alpha=0.5, linestyle=['--','-','--'])\n",
    "\n",
    "# 绘制支持向量\n",
    "ax.scatter(clf.support_vectors_[:,0], clf.support_vectors_[:,1], s=100, linewidth=1, facecolors='red')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
